#!/usr/bin/env bash
debug=0
values=3

ano=$(date '+%Y')
mes=$(date '+%m')
dia=$(date '+%d')
hoje=$dia/$mes/$ano

tests=(
# ''	''	''	r	^Uso:.*   # STDIN
# -f	AAAA	''	r	^Uso:.*   # STDIN

 
# Erro: formato desconhecido (sem e com -f)
foo		''	''	t	"Erro: Data em formato desconhecido 'foo'"
001/02/2003	''	''	t	"Erro: Data em formato desconhecido '001/02/2003'"
01/002/2003	''	''	t	"Erro: Data em formato desconhecido '01/002/2003'"
01/02/20003	''	''	t	"Erro: Data em formato desconhecido '01/02/20003'"
aa/bb/cccc	''	''	t	"Erro: Data em formato desconhecido 'aa/bb/cccc'"
-f	AAAA	foo		t	"Erro: Data em formato desconhecido 'foo'"
-f	AA	001/02/2003	t	"Erro: Data em formato desconhecido '001/02/2003'"
-f	AA	01/002/2003	t	"Erro: Data em formato desconhecido '01/002/2003'"
-f	AA	01/02/20003	t	"Erro: Data em formato desconhecido '01/02/20003'"
-f	AA	aa/bb/cccc	t	"Erro: Data em formato desconhecido 'aa/bb/cccc'"

# Erro: formato conhecido, mas zztool testa_data falhou (sem e com -f)
99/99/9999	''	''	r	"Data inválida .*"
99/99/999	''	''	r	"Data inválida .*"
99/99/99	''	''	r	"Data inválida .*"
99/99/9		''	''	r	"Data inválida .*"
9/99/99		''	''	r	"Data inválida .*"
99/9/99		''	''	r	"Data inválida .*"
31/02/2003	''	''	r	"Data inválida .*"
-f	AA	99/99/9999	r	"Data inválida .*"
-f	AA	99/99/999	r	"Data inválida .*"
-f	AA	99/99/99	r	"Data inválida .*"
-f	AA	99/99/9		r	"Data inválida .*"
-f	AA	9/99/99		r	"Data inválida .*"
-f	AA	99/9/99		r	"Data inválida .*"
-f	AA	31/02/2003	r	"Data inválida .*"

# ok
05/08/1977	''	''	t	05/08/1977

# -f
-f	AAAA			01/02/2003	t	2003
-f	AAA			01/02/2003	t	033
-f	AA			01/02/2003	t	03
-f	A			01/02/2003	t	3
-f	MES			01/02/2003	t	fevereiro
-f	MESM			01/02/2003	t	fevereiro2
-f	MMES			01/02/2003	t	2fevereiro
-f	MMMM			01/02/2003	t	0202
-f	MMM			01/02/2003	t	022
-f	MM			01/02/2003	t	02
-f	M			01/02/2003	t	2
-f	DDDD			01/02/2003	t	0101
-f	DDD			01/02/2003	t	011
-f	DD			01/02/2003	t	01
-f	D			01/02/2003	t	1
-f	D/M/AA			01/02/2003	t	1/2/03
-f	DD/MM/AAAA		01/02/2003	t	01/02/2003
-f	D.de.MES.de.AAAA	01/02/2003	t	1.de.fevereiro.de.2003
-f	A			11/12/2013	t	13
-f	M			11/12/2013	t	12
-f	D			11/12/2013	t	11
-f	A			11/12/2000	t	0

# nomes dos meses
-f	MES			01/01/2000	t	janeiro
-f	MES			01/02/2000	t	fevereiro
-f	MES			01/03/2000	t	março
-f	MES			01/04/2000	t	abril
-f	MES			01/05/2000	t	maio
-f	MES			01/06/2000	t	junho
-f	MES			01/07/2000	t	julho
-f	MES			01/08/2000	t	agosto
-f	MES			01/09/2000	t	setembro
-f	MES			01/10/2000	t	outubro
-f	MES			01/11/2000	t	novembro
-f	MES			01/12/2000	t	dezembro

# ano 4 dígitos, sem alterações
01/02/0003	''	''	t	01/02/0003
01/02/0033	''	''	t	01/02/0033
01/02/0333	''	''	t	01/02/0333
01/02/3333	''	''	t	01/02/3333

# ano 3 dígitos, completa com um zero
01/02/003	''	''	t	01/02/0003
01/02/033	''	''	t	01/02/0033
01/02/333	''	''	t	01/02/0333

# ano 2 dígitos, pode ser 19.. ou 20..
01/02/40	''	''	t	01/02/1940
01/02/41	''	''	t	01/02/1941
01/02/50	''	''	t	01/02/1950
01/02/60	''	''	t	01/02/1960
01/02/70	''	''	t	01/02/1970
01/02/80	''	''	t	01/02/1980
01/02/90	''	''	t	01/02/1990
01/02/99	''	''	t	01/02/1999
01/02/00	''	''	t	01/02/2000
01/02/01	''	''	t	01/02/2001
01/02/10	''	''	t	01/02/2010
01/02/20	''	''	t	01/02/2020
01/02/30	''	''	t	01/02/2030
01/02/38	''	''	t	01/02/2038
01/02/39	''	''	t	01/02/2039

# ano 1 dígito, é sempre 200.
01/02/0		''	''	t	01/02/2000
01/02/1		''	''	t	01/02/2001
01/02/2		''	''	t	01/02/2002
01/02/3		''	''	t	01/02/2003
01/02/4		''	''	t	01/02/2004
01/02/5		''	''	t	01/02/2005
01/02/6		''	''	t	01/02/2006
01/02/7		''	''	t	01/02/2007
01/02/8		''	''	t	01/02/2008
01/02/9		''	''	t	01/02/2009

# mês 1 dígito
01/1/2003	''	''	t	01/01/2003
01/2/2003	''	''	t	01/02/2003
01/3/2003	''	''	t	01/03/2003
01/4/2003	''	''	t	01/04/2003
01/5/2003	''	''	t	01/05/2003
01/6/2003	''	''	t	01/06/2003
01/7/2003	''	''	t	01/07/2003
01/8/2003	''	''	t	01/08/2003
01/9/2003	''	''	t	01/09/2003

# dia 1 dígito
1/02/2003	''	''	t	01/02/2003
2/02/2003	''	''	t	02/02/2003
3/02/2003	''	''	t	03/02/2003
4/02/2003	''	''	t	04/02/2003
5/02/2003	''	''	t	05/02/2003
6/02/2003	''	''	t	06/02/2003
7/02/2003	''	''	t	07/02/2003
8/02/2003	''	''	t	08/02/2003
9/02/2003	''	''	t	09/02/2003

# faltando zeros, misturado
1/2/2003	''	''	t	01/02/2003
1/2/003		''	''	t	01/02/0003
1/2/03		''	''	t	01/02/2003
1/2/3		''	''	t	01/02/2003
1/2/73		''	''	t	01/02/1973
1/02/003	''	''	t	01/02/0003
1/02/03		''	''	t	01/02/2003
1/02/3		''	''	t	01/02/2003
1/02/73		''	''	t	01/02/1973
01/2/003	''	''	t	01/02/0003
01/2/03		''	''	t	01/02/2003
01/2/3		''	''	t	01/02/2003
01/2/73		''	''	t	01/02/1973

# Apelidos
hoje		''	''	t	$hoje

# formato iso
1977-08-05	''	''	t	05/08/1977

# delimitador diferente
05-08-1977	''	''	t	05/08/1977
05-08-77	''	''	t	05/08/1977
05-08-7		''	''	t	05/08/2007
5-08-1977	''	''	t	05/08/1977
5-08-77		''	''	t	05/08/1977
5-08-7		''	''	t	05/08/2007
05-8-1977	''	''	t	05/08/1977
05-8-77		''	''	t	05/08/1977
05-8-7		''	''	t	05/08/2007
5-8-1977	''	''	t	05/08/1977
5-8-77		''	''	t	05/08/1977
5-8-7		''	''	t	05/08/2007
#
05.08.1977	''	''	t	05/08/1977
05.08.77	''	''	t	05/08/1977
05.08.7		''	''	t	05/08/2007
5.08.1977	''	''	t	05/08/1977
5.08.77		''	''	t	05/08/1977
5.08.7		''	''	t	05/08/2007
05.8.1977	''	''	t	05/08/1977
05.8.77		''	''	t	05/08/1977
05.8.7		''	''	t	05/08/2007
5.8.1977	''	''	t	05/08/1977
5.8.77		''	''	t	05/08/1977
5.8.7		''	''	t	05/08/2007

# sem delimitador
05081977	''	''	t	05/08/1977
050877		''	''	t	05/08/1977
050817		''	''	t	05/08/2017

# dia e mês
05/06		''	''	t	05/06/$ano
05/6		''	''	t	05/06/$ano
5/06		''	''	t	05/06/$ano
5/6		''	''	t	05/06/$ano

### Daqui pra baixo ainda não foi implementado
### (e ainda não sei se deve ser)

# # só dia
# 1		''	''	t	01/$mes/$ano
# 2		''	''	t	02/$mes/$ano
# 3		''	''	t	03/$mes/$ano
# 4		''	''	t	04/$mes/$ano
# 5		''	''	t	05/$mes/$ano
# 6		''	''	t	06/$mes/$ano
# 7		''	''	t	07/$mes/$ano
# 8		''	''	t	08/$mes/$ano
# 9		''	''	t	09/$mes/$ano
# 01		''	''	t	01/$mes/$ano
# 02		''	''	t	02/$mes/$ano
# 03		''	''	t	03/$mes/$ano
# 04		''	''	t	04/$mes/$ano
# 05		''	''	t	05/$mes/$ano
# 06		''	''	t	06/$mes/$ano
# 07		''	''	t	07/$mes/$ano
# 08		''	''	t	08/$mes/$ano
# 09		''	''	t	09/$mes/$ano
# 10		''	''	t	10/$mes/$ano
# 11		''	''	t	11/$mes/$ano
# 12		''	''	t	12/$mes/$ano
# 13		''	''	t	13/$mes/$ano
# 14		''	''	t	14/$mes/$ano
# 15		''	''	t	15/$mes/$ano
# 16		''	''	t	16/$mes/$ano
# 17		''	''	t	17/$mes/$ano
# 18		''	''	t	18/$mes/$ano
# 19		''	''	t	19/$mes/$ano
# 20		''	''	t	20/$mes/$ano
# 21		''	''	t	21/$mes/$ano
# 22		''	''	t	22/$mes/$ano
# 23		''	''	t	23/$mes/$ano
# 24		''	''	t	24/$mes/$ano
# 25		''	''	t	25/$mes/$ano
# 26		''	''	t	26/$mes/$ano
# 27		''	''	t	27/$mes/$ano
# 28		''	''	t	28/$mes/$ano
# 29		''	''	t	29/$mes/$ano
# 30		''	''	t	30/$mes/$ano
# 31		''	''	t	31/$mes/$ano
# 
# # só mês e ano
# 08/1977		''	''	t	$dia/08/1977
# 8/1977		''	''	t	$dia/08/1977
# 
# # só o ano
# 1977		''	''	t	$dia/$mes/1977

)
. _lib
